package edu.upc.clase.demo.controller;

import edu.upc.clase.demo.entity.Credential;
import edu.upc.clase.demo.entity.CriterioBusqueda;
import edu.upc.clase.demo.entity.JsonResponse;
import edu.upc.clase.demo.entity.Usuario;
import edu.upc.clase.demo.service.UsuarioService;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import edu.upc.clase.demo.dao.EntradaDao;
import edu.upc.clase.demo.dao.TipoentradaDao;
import edu.upc.clase.demo.entity.*;
import edu.upc.clase.demo.service.EntradaService;
import edu.upc.clase.demo.service.TipoentradaService;
import org.apache.taglibs.standard.tag.common.xml.ForEachTag;
        

/**
 *
 * @author rpalacios
 */
@Controller("preguntaController")
public class PreguntaController {
    
    @Autowired
    private EntradaService entradaService;
    
    @Autowired
    private UsuarioService usuarioService;    
    
    @Autowired
    private TipoentradaService tipoEntradaService;
     
    private static Logger log = LoggerFactory.getLogger(UsuarioController.class);
    
    
     @RequestMapping("/preguntas/portada")
    public ModelAndView portada() {
        ModelAndView mav = new ModelAndView("preguntas/portada");
        List<Entrada> entradas = entradaService.buscarPreguntas();
        
        for (int i = 0; i < entradas.size(); i++) {  
      String lenguaje = entradas.get(i).getDescripcion();  
      System.out.println("Me gusta " + lenguaje);  
    }  
      
        mav.addObject("entradas", entradas);
        return mav;
    }
    
     @RequestMapping("/preguntas/micuenta")
    public ModelAndView micuenta() {
        ModelAndView mav = new ModelAndView("preguntas/micuenta");
     
        return mav;
    }
    
    @RequestMapping("/preguntas/login")
    public ModelAndView login() {
        ModelAndView mav = new ModelAndView("preguntas/login");
        Credential credential = new Credential();
        mav.getModelMap().put("credential", credential);
        return mav;
    }    
    
    @RequestMapping(value = "/preguntas/autenticar", method=RequestMethod.POST)
    public String autenticar(@ModelAttribute("credential") Credential credential,HttpServletRequest request) {
        System.out.println("test");
        if (usuarioService.autenticar(credential.getCorreo(), credential.getPassword())) {
            Usuario usuario = usuarioService.buscarPorCorreo(credential.getCorreo());
            request.getSession().setAttribute("credential",credential);
            request.getSession().setAttribute("usuario",usuario);
            return "redirect:/pages/preguntas/portada";
        }
        return "redirect:/pages/preguntas/portada";
    }
    
     @RequestMapping("/preguntas/registro")
    public ModelAndView registro() {
        ModelAndView mav = new ModelAndView("preguntas/registro");
     
        return mav;
    }
         @RequestMapping("/preguntas/buscar")
    public ModelAndView buscar() {
        ModelAndView mav = new ModelAndView("preguntas/buscar");
     
        return mav;
    }
         @RequestMapping("/preguntas/pregunta")
    public ModelAndView pregunta() {
        ModelAndView mav = new ModelAndView("preguntas/pregunta");
     
        return mav;
    }
            @RequestMapping(value = "/preguntas/nueva", method=RequestMethod.GET)
        public ModelAndView nueva() {
            ModelAndView mav = new ModelAndView("preguntas/nueva");
            Entrada entrada = new Entrada();
            mav.addObject("entrada", entrada);
            return mav;
        }
            
         @RequestMapping(value = "/preguntas/nueva", method=RequestMethod.POST)
        public String nueva(@ModelAttribute("entrada") Entrada entrada,HttpServletRequest request) {
            Tipoentrada tipoentrada = tipoEntradaService.buscar(1);
            entrada.setTipoentrada(tipoentrada);
            Usuario usuario = (Usuario) request.getSession().getAttribute("usuario");
            entrada.setUsuario(usuario);
            if (entradaService.insertar(entrada) > 0) {
                request.getSession().setAttribute("entrada",entrada);
                return "redirect:/pages/preguntas/pregunta";
            }
            return "redirect:/pages/preguntas/portada";
        }

         @RequestMapping("/registro/confirmacion")
    public ModelAndView confirmacionRegistro() {
        ModelAndView mav = new ModelAndView("registro_confirmacion_tiles");
     
        return mav;
    }
         @RequestMapping("/email/registro/confirmacion")
    public ModelAndView emailConfirmacionRegistro() {
        ModelAndView mav = new ModelAndView("email/registro/confirmacion");
     
        return mav;
    }
    
    
}
